package com.blackline.UI.NavigationMenu;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;

/**
 * @author XBO
 * @version Jan, 2013
 * <p>This UI is the Navigation Menu which contains links to BlackLine products, tools, and features. <br>
 * Selections on this menu change depending on your role and licensed products.
 * Please refer to UI.NavigationMenu.png in doc-files.
 */
public class navigationMenu {
	/**
	 * Click Here preview link.
	 */
	@FindBy(id = "ctl00_ctl00_clickHere")
	public WebElement Click_Here_previewLink;
	
	
	/**
	 * The "X" close icon in preview message.
	 */
	@FindBy(className = "close-preview")
	public WebElement X_closeIcon;
	
	

	/**
	 * Home link
	 */
	@FindBy(xpath="(//a[@class = 'WebControls_menuItem selected Home WebControls_menuItem_first'])")
	public WebElement HOME;
	
	
	/**
	 * ACCOUNTS link 
	 */
//	@FindBy(linkText = "ACCOUNTS")
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem Accounts'])")
	public WebElement ACCOUNTS;
	
	
	///////////////////////////////////////////////
	//The sub items of ACCCOUNTS
    /////////////////////////////////////////////
	/**
	 * ACCOUNTS' sub-item: Accounts
	 */
	@FindBy(xpath = "(//a[contains(text(),'Accounts')])[8]")
	public WebElement Accounts;

	
	/**
	 * ACCOUNTS' sub-item: Bulk Assignment - Accounts
	 */
	//@FindBy(xpath = "(//a[contains(text(),'Bulk Assignment - Accounts')])[2]")
	@FindBy(linkText = "Bulk Assignment - Accounts")
	public WebElement Bulk_Assignment_Accounts;
	
	/**
	 * ACCOUNTS' sub-item: Bulk Assignment - Management Review Groups
	 */
//	@FindBy(xpath = "(//a[contains(text(),'Bulk Assignment - Management Review Groups')])[2]")
	@FindBy(linkText = "Bulk Assignment - Management Review Groups")
	public WebElement Bulk_Assignment_Management_Review_Groups;
	
	/**
	 * ACCOUNTS' sub-item: Mass Update Account Settings
	 */
//	@FindBy(xpath = "(//a[contains(text(),'Mass Update Account Settings')])[2]")
	@FindBy(linkText = "Mass Update Account Settings")
	public WebElement Mass_Update_Account_Settings;
	
	/**
	 * ACCOUNTS' sub-item: Mass Update Management Review Group Settings
	 */
	@FindBy(linkText = "Mass Update Management Review Group Settings")
	public WebElement Mass_Update_Management_Review_Group_Settings;
	
	/**
	 * ACCOUNTS' sub-item: Mass Update Due Date Settings
	 */
	@FindBy(linkText = "Mass Update Due Date Settings")
	public WebElement Mass_Update_Due_Date_Settings;
	
	
	/**
	 * ACCOUNTS' sub-item: Reset Temporary Assignments - Accounts
	 */
	@FindBy(linkText = "Reset Temporary Assignments - Accounts")
	public WebElement Reset_Temporary_Assignments_Accounts;
	
	/**
	 * ACCOUNTS' sub-item: Reset Temporary Assignments - Management Review Groups
	 */
	@FindBy(linkText = "Reset Temporary Assignments - Management Review Groups")
	public WebElement Reset_Temporary_Assignments_Management_Review_Groups;
	
	/**
	 * ACCOUNTS' sub-item: View Reconciliations
	 */
	@FindBy(linkText = "View Reconciliations")
	public WebElement View_Reconciliations;
	
	/**
	 * ACCOUNTS' sub-item: Fulfill Requests
	 */
	@FindBy(linkText = "Fulfill Requests")
	public WebElement Fulfill_Requests;
	
	/**
	 * ACCOUNTS' sub-item: View Processed Requests
	 */
	@FindBy(linkText = "View Processed Requests")
	public WebElement View_Processed_Requests;
	
	
	/**
	 * ACCOUNTS' sub-item: Account Rules
	 */
	@FindBy(linkText = "Account Rules")
	public WebElement Account_Rules;
	
    /////////////////////////////////////////////
	
	/**
	 * MATCH link
	 */
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem Match'])")
	public WebElement MATCH;
	
	///////////////////////////////////////////////
	//The sub items of MATCH
    /////////////////////////////////////////////
	
	/**
	 * MATCH's sub-item: Data Sources
	 */
	@FindBy(linkText = "Data Sources")
	public WebElement Data_Sources;
	
	
	/**
	 * MATCH's sub-item: Match Sets
	 */
	@FindBy(linkText = "Match Sets")
	public WebElement Match_Sets;
	
	
	/**
	 * MATCH's sub-item: Unmatched Transactions
	 */
	@FindBy(linkText = "Unmatched Transactions")
	public WebElement Unmatched_Transactions;
	
	
	/**
	 * MATCH's sub-item: Matched Transactions
	 */
	@FindBy(linkText = "Matched Transactions")
	public WebElement Matched_Transactions;
	
	
	/**
	 * MATCH's sub-item: Close Items with Matched Transactions
	 */
	@FindBy(linkText = "Close Items with Matched Transactions")
	public WebElement Close_Items_with_Matched_Transactions;
	
	
	/**
	 * MATCH's sub-item: Create In Transit Items
	 */
	@FindBy(linkText = "Create In Transit Items")
	public WebElement Create_In_Transit_Items;
	
	
	/**
	 * MATCH's sub-item: Imports
	 */
	@FindBy(linkText = "Imports")
	public WebElement Imports;
	
	
	/**
	 * MATCH's sub-item: Create Data Source (Preparer role can see this.)
	 */
	@FindBy(linkText = "Create Data Source")
	public WebElement Create_Data_Source;
	
    /////////////////////////////////////////////
	
	
	
	/**
	 * JOURNALS link
	 */
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem Journals'])")
	public WebElement JOURNALS;
	///////////////////////////////////////////////
	//The sub items of JOURNALS
    /////////////////////////////////////////////
	/**
	 * JOURNALS' sub-item: View Journal Progress
	 */
	@FindBy(linkText = "View Journal Progress")
	public WebElement View_Journal_Progress;
	
	
	/**
	 * JOURNALS' sub-item: Bulk Assignment - Journals
	 */
	@FindBy(linkText = "Bulk Assignment - Journals")
	public WebElement Bulk_Assignment_Journals;
	
	
	/**
	 * JOURNALS' sub-item: Reset Temporary Assignments - Journals
	 */
	@FindBy(linkText = "Reset Temporary Assignments - Journals")
	public WebElement Reset_Temporary_Assignments_Journals;
	
	
	/**
	 * JOURNALS' sub-item: Bulk Journals
	 */
	@FindBy(linkText = "Bulk Journals")
	public WebElement Bulk_Journals;
	
	
	/**
	 * JOURNALS' sub-item: Allocation Tables
	 */
	@FindBy(linkText = "Allocation Tables")
	public WebElement Allocation_Tables;
	
	
	/**
	 * JOURNALS' sub-item: LookupTables
	 */
	@FindBy(linkText = "LookupTables")
	public WebElement LookupTables;
    /////////////////////////////////////////////	

	
	/**
	 * TASKS link
	 */
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem Tasks'])")
	public WebElement TASKS;
	///////////////////////////////////////////////
	//The sub items of 
    /////////////////////////////////////////////
	/**
	 * TASKS' sub-items: Tasks
	 */
	@FindBy(linkText = "Tasks")
	public WebElement Tasks;
	
	
	/**
	 * TASKS' sub-items: View Task Progress
	 */
	@FindBy(linkText = "View Task Progress")
	public WebElement View_Task_Progress;
	
	
	/**
	 * TASKS' sub-items: Bulk Assignment - Tasks
	 */
	@FindBy(linkText = "Bulk Assignment - Tasks")
	public WebElement Bulk_Assignment_Tasks;
	
	
	/**
	 * TASKS' sub-items: Mass Update Task Settings
	 */
	@FindBy(linkText = "Mass Update Task Settings")
	public WebElement Mass_Update_Task_Settings;
	
	
	/**
	 * TASKS' sub-items: Reset Temporary Assignments - Tasks
	 */
	@FindBy(linkText = "Reset Temporary Assignments - Tasks")
	public WebElement Reset_Temporary_Assignments_Tasks;
    /////////////////////////////////////////////	
	
	
	
	/**
	 * CIM link
	 */
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem CIM'])")
	public WebElement CIM;
	///////////////////////////////////////////////
	//The sub items of 
    /////////////////////////////////////////////
	/**
	 * CIM's sub-item: Consolidation Accounts
	 */
	@FindBy(linkText = "Consolidation Accounts")
	public WebElement Consolidation_Accounts;
	
	
	/**
	 * CIM's sub-item: Bulk Assignment - Consolidation Accounts
	 */
	@FindBy(linkText = "Bulk Assignment - Consolidation Accounts")
	public WebElement Bulk_Assignment_Consolidation_Accounts;
	
	
	/**
	 * CIM's sub-item: Mass Update Consolidation Account Settings
	 */
	@FindBy(linkText = "Mass Update Consolidation Account Settings")
	public WebElement Mass_Update_Consolidation_Account_Settings;
	
	
	/**
	 * CIM's sub-item: Reset Temporary Assignments - Consolidation Accounts
	 */
	@FindBy(linkText = "Reset Temporary Assignments - Consolidation Accounts")
	public WebElement Reset_Temporary_Assignments_Consolidation_Accounts;
	
	
	/**
	 * CIM's sub-item: View Reconciliations
	 * <br> ACCOUNTS also has a sub-item called "View Reconciliations", so this one added "CIM" at the end.
	 */
	@FindBy(linkText = "View Reconciliations")
	public WebElement View_Reconciliations_CIM;
	
    /////////////////////////////////////////////	
	/**
	 * VARIANCE link
	 */
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem Variance'])")
	public WebElement VARIANCE;
	///////////////////////////////////////////////
	//The sub items of VARIANCE
    /////////////////////////////////////////////
	/**
	 * VARIANCE's sub-item:Adhoc Variance Report
	 */
	@FindBy(linkText = "Adhoc Variance Report")
	public WebElement Adhoc_Variance_Report;
	
	
	/**
	 * VARIANCE's sub-item:Variance Analysis
	 */
	@FindBy(linkText = "Variance Analysis")
	public WebElement Variance_Analysis;
	
	
	/**
	 * VARIANCE's sub-item:Variance Groups
	 */
	@FindBy(linkText = "Variance Groups")
	public WebElement Variance_Groups;
	
	
	/**
	 * VARIANCE's sub-item:Variance Rules
	 */
	@FindBy(linkText = "Variance Rules")
	public WebElement Variance_Rules;
	
	
	/**
	 * VARIANCE's sub-item:Run Variance Rules
	 */
	@FindBy(linkText = "Run Variance Rules")
	public WebElement Run_Variance_Rules;
	
	
	/**
	 * VARIANCE's sub-item:Standard Variance Codes
	 */
	@FindBy(linkText = "Standard Variance Codes")
	public WebElement Standard_Variance_Codes;
	
	
	/**
	 * VARIANCE's sub-item:Bulk Assignment - Variance
	 */
	@FindBy(linkText = "Bulk Assignment - Variance")
	public WebElement Bulk_Assignment_Variance;
	
	
	/**
	 * VARIANCE's sub-item:Mass Update Variance Group Record Settings
	 */
	@FindBy(linkText = "Mass Update Variance Group Record Settings")
	public WebElement Mass_Update_Variance_Group_Record_Settings;
	
	
	/**
	 * VARIANCE's sub-item:Reset Temporary Assignments - Variance
	 */
	@FindBy(linkText = "Reset Temporary Assignments - Variance")
	public WebElement Reset_Temporary_Assignments_Variance;
	
	
	/**
	 * VARIANCE's sub-item:Accounts Listing
	 */
	@FindBy(linkText = "Accounts Listing")
	public WebElement Accounts_Listing;
    /////////////////////////////////////////////	

	
	
	
	/**
	 *USERS  link
	 */
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem Users'])")
	public WebElement USERS;
    /////////////////////////////////////////////	
	
	
	
	/**
	 * IMPORTS link
	 */
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem Imports'])")
	public WebElement IMPORTS;
	///////////////////////////////////////////////
	//The sub items of IMPORTS
    /////////////////////////////////////////////
	/**
	 * IMPORTS' sub-item: Import Status
	 */
	@FindBy(linkText = "Import Status")
	public WebElement Import_Status;
	
	
	/**
	 * IMPORTS' sub-item: Job Status
	 */
	@FindBy(linkText = "Job Status")
	public WebElement Job_Status;
	
	
	/**
	 * IMPORTS' sub-item: Interface Schedule
	 */
	@FindBy(linkText = "Interface Schedule")
	public WebElement Interface_Schedule;
	
	
	/**
	 * IMPORTS' sub-item: Import Data
	 */
	@FindBy(linkText = "Import Data")
	public WebElement Import_Data;
	
	
	/**
	 * IMPORTS' sub-item: Uploaded Account Information
	 */
	@FindBy(linkText = "Uploaded Account Information")
	public WebElement Uploaded_Account_Information;
	
	
	/**
	 * IMPORTS' sub-item: Uploaded Currency Information
	 */
	@FindBy(linkText = "Uploaded Currency Information")
	public WebElement Uploaded_Currency_Information;
	
	
	/**
	 * IMPORTS' sub-item: Uploaded Cross Currency Information
	 */
	@FindBy(linkText = "Uploaded Cross Currency Information")
	public WebElement Uploaded_Cross_Currency_Information;
	
	
	/**
	 * IMPORTS' sub-item: Uploaded Journal Validation
	 */
	@FindBy(linkText = "Uploaded Journal Validation")
	public WebElement Uploaded_Journal_Validation;
	
	
	/**
	 * IMPORTS' sub-item: Uploaded Journal Dependent Validation
	 */
	@FindBy(linkText = "Uploaded Journal Dependent Validation")
	public WebElement Uploaded_Journal_Dependent_Validation;
	
	
	/**
	 * IMPORTS' sub-item: Uploaded Journal Static Descriptions
	 */
	@FindBy(linkText = "Uploaded Journal Static Descriptions")
	public WebElement Uploaded_Journal_Static_Descriptions;
	
	
	/**
	 * IMPORTS' sub-item: Run Auto-Reconciliation Process
	 */
	@FindBy(linkText = "Run Auto-Reconciliation Process")
	public WebElement Run_Auto_Reconciliation_Process;
    /////////////////////////////////////////////	

	
	
	/**
	 *ALERTS  link
	 */
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem Alerts'])")
	public WebElement ALERTS;
	///////////////////////////////////////////////
	//The sub items of ALERTS
    /////////////////////////////////////////////
	/**
	 * ALERTS' sub item: Alerts
	 */
	@FindBy(linkText = "Alerts")
	public WebElement Alerts;
	
	/**
	 * ALERTS' sub item: Alert Types
	 */
	@FindBy(linkText = "Alert Types")
	public WebElement Alert_Types;
	
	/**
	 * ALERTS' sub item: Alert Schedule
	 */
	@FindBy(linkText = "Alert Schedule")
	public WebElement Alert_Schedule;
	///////////////////////////////////////////////
	
	/**
	 * REPORTS link
	 */
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem Reports'])")
	public WebElement REPORTS;
    /////////////////////////////////////////////	
	
	
	
	
	/**
	 * SETTINGS link
	 */
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem Settings WebControls_menuItem_last'])")
	public WebElement SETTINGS;
	///////////////////////////////////////////////
	//The sub items of SETTINGS
    /////////////////////////////////////////////
	/**
	 * SETTINGS' sub item: My Settings > Profile
	 */
	@FindBy(linkText = "Profile")
	public WebElement Profile;
	
	
	/**
	 * SETTINGS' sub item: My Settings > Password
	 */
	@FindBy(linkText = "Password")
	public WebElement Password;
	
	
	/**
	 * SETTINGS' sub item: My Settings > Preferences
	 */
	@FindBy(linkText = "Preferences")
	public WebElement Preferences;
	
	
	/**
	 * SETTINGS' sub item: My Settings > Report Menu Setup
	 */
	@FindBy(linkText = "Report Menu Setup")
	public WebElement Report_Menu_Setup;
	
	
	/**
	 * SETTINGS' sub item: Frequently Used Settings > Period End Dates
	 */
	@FindBy(linkText = "Period End Dates")
	public WebElement Period_End_Dates;
	
	
	/**
	 * SETTINGS' sub item: Frequently Used Settings >Custom Frequencies
	 */
	@FindBy(linkText = "Custom Frequencies")
	public WebElement Custom_Frequencies;
	
	
	/**
	 * SETTINGS' sub item: Frequently Used Settings >Task Calendar
	 */
	@FindBy(linkText = "Task Calendar")
	public WebElement Task_Calendar;
	
	
	/**
	 * SETTINGS' sub item: Frequently Used Settings >Static Data
	 */
	@FindBy(linkText = "Static Data")
	public WebElement Static_Data;
	
	
	/**
	 * SETTINGS' sub item: Frequently Used Settings >Locations and Holiday Calendars
	 */
	@FindBy(linkText = "Locations and Holiday Calendars")
	public WebElement Locations_and_Holiday_Calendars;
	
	
	/**
	 * SETTINGS' sub item: Frequently Used Settings >Send Bulk Email
	 */
	@FindBy(linkText = "Send Bulk Email")
	public WebElement Send_Bulk_Email;
	
	
	/**
	 * SETTINGS' sub item:  System Settings > Application Settings 
	 */
	@FindBy(linkText = "Application Settings")
	public WebElement Application_Settings;
	
	
	/**
	 * SETTINGS' sub item: System Settings > Security Settings
	 */
	@FindBy(linkText = "Security Settings")
	public WebElement Security_Settings;
	
	
	/**
	 * SETTINGS' sub item: System Settings > Currency Settings
	 */
	@FindBy(linkText = "Currency Settings")
	public WebElement Currency_Settings;
	
	
	/**
	 * SETTINGS' sub item: System Settings > Alert Settings
	 */
	@FindBy(linkText = "Alert Settings")
	public WebElement Alert_Settings;
	
	
	/**
	 * SETTINGS' sub item: System Settings > Organizational Structure
	 */
	@FindBy(linkText = "Organizational Structure")
	public WebElement Organizational_Structure;
	
	
	/**
	 * SETTINGS' sub item: System Settings > Team Structure
	 */
	@FindBy(linkText = "Team Structure")
	public WebElement Team_Structure;
	
	
	/**
	 * SETTINGS' sub item: System Settings > User Settings
	 */
	@FindBy(linkText = "User Settings")
	public WebElement User_Settings;
	
	
	/**
	 * SETTINGS' sub item: System Settings > Reconciliation Templates
	 */
	@FindBy(linkText = "Reconciliation Templates")
	public WebElement Reconciliation_Templates;
	
	
	/**
	 * SETTINGS' sub item: System Settings > Certification Checklist Configuration
	 */
	@FindBy(linkText = "Certification Checklist Configuration")
	public WebElement Certification_Checklist_Configuration;
	
	
	/**
	 * SETTINGS' sub item: System Settings > Item Settings
	 */
	@FindBy(linkText = "Item Settings")
	public WebElement Item_Settings;
	
	
	/**
	 * SETTINGS' sub item: System Settings > Configure Read-Only Fields for Imported Editable 
	 */
	@FindBy(linkText = "Configure Read-Only Fields for Imported Editable Items")
	public WebElement Configure_Read_Only_Fields_for_Imported_Editable_Items;
	
	
	/**
	 * SETTINGS' sub item: System Settings > Items
	 */
	@FindBy(linkText = "Items")
	public WebElement Items;
	
	
	/**
	 * SETTINGS' sub item: System Settings Continued > Document Settings
	 */
	@FindBy(linkText = "Document Settings")
	public WebElement Document_Settings;
	
	
	/**
	 * SETTINGS' sub item: System Settings Continued > Comment Settings
	 */
	@FindBy(linkText = "Comment Settings")
	public WebElement Comment_Settings;
	
	
	/**
	 * SETTINGS' sub item: System Settings Continued > Evaluation Settings
	 */
	@FindBy(linkText = "Evaluation Settings")
	public WebElement Evaluation_Settings;
	
	
	/**
	 * SETTINGS' sub item: System Settings Continued > Auto-Certification Rules
	 */
	@FindBy(linkText = "Auto-Certification Rules")
	public WebElement Auto_Certification_Rules;
	
	
	/**
	 * SETTINGS' sub item: System Settings Continued > Role Definition
	 */
	@FindBy(linkText = "Role Definition")
	public WebElement Role_Definition;
	
	
	/**
	 * SETTINGS' sub item: System Settings Continued > Segment Combination Configuration
	 */
	@FindBy(linkText = "Segment Combination Configuration")
	public WebElement Segment_Combination_Configuration;
	
	
	/**
	 * SETTINGS' sub item: System Settings Continued > Certification Language
	 */
	@FindBy(linkText = "Certification Language")
	public WebElement Certification_Language;
	
	
	/**
	 * SETTINGS' sub item: System Settings Continued > Language Setup
	 */
	@FindBy(linkText = "Language Setup")
	public WebElement Language_Setup;
	
	
	/**
	 * SETTINGS' sub item: System Settings Continued > Due Date Rules
	 */
	@FindBy(linkText = "Due Date Rules")
	public WebElement Due_Date_Rules;
	
	
	/**
	 * SETTINGS' sub item: System Settings Continued > Report Menu Setup By Role
	 */
	@FindBy(linkText = "Report Menu Setup By Role")
	public WebElement Report_Menu_Setup_By_Role;
	
	
	/**
	 * SETTINGS' sub item: Module Settings > Account Settings
	 */
	@FindBy(linkText = "Account Settings")
	public WebElement Account_Settings;
	
	
	/**
	 * SETTINGS' sub item: Module Settings > Consolidation Settings
	 */
	@FindBy(linkText = "Consolidation Settings")
	public WebElement Consolidation_Settings;
	
	
	/**
	 * SETTINGS' sub item: Module Settings > Journal Settings
	 */
	@FindBy(linkText = "Journal Settings")
	public WebElement Journal_Settings;
	
	
	/**
	 * SETTINGS' sub item: Module Settings > Match Settings
	 */
	@FindBy(linkText = "Match Settings")
	public WebElement Match_Settings;
	
	
	/**
	 * SETTINGS' sub item: Module Settings > Task Settings
	 */
	@FindBy(linkText = "Task Settings")
	public WebElement Task_Settings;
	
	
	/**
	 * SETTINGS' sub item: Advanced Settings > Export Data
	 */
	@FindBy(linkText = "Export Data")
	public WebElement Export_Data;
	
	
	/**
	 * SETTINGS' sub item: Advanced Settings > Job Schedules
	 */
	@FindBy(linkText = "Job Schedules")
	public WebElement Job_Schedules;
	
	
	/**
	 * RISK link (CFO role)
	 */
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem Risk'])")
	public WebElement RISK;
	
	
	/**
	 * EVALUATIONS link (CFO role)
	 */
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem Evaluations'])")
	public WebElement EVALUATIONS;
	
	
	/**
	 * REQUESTS link (CFO role)
	 */
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem Requests'])")
	public WebElement REQUESTS;
	
	
	/**
	 * REQUESTS' sub-item: Make Requests (CFO role)
	 */
	@FindBy(linkText = "Make Requests")
	public WebElement Make_Requests;
	
	
	/**
	 * REQUESTS' sub-item: Submitted Request List (CFO role)
	 */
	@FindBy(linkText = "Submitted Request List")
	public WebElement Submitted_Request_List;
	
	
	/**
	 * NOTEBOOK link (Internal Auditor role)
	 */
	@FindBy(xpath = "(//a[@class = 'WebControls_menuItem Notebook'])")
	public WebElement NOTEBOOK;
	
	
		
}
